Hierarchical databases, such as IBM's IMS (Information Management System), are well known in the art. (IMS is a trademark of International Business Machines Corporation in the United States, other countries, or both.) IMS is a hierarchical database management system (HDBMS) with wide spread usage in many large enterprises where high transaction volume, reliability, availability and scalability are of the utmost importance. IMS provides software and interfaces for running the businesses of many of the world's largest corporations. However, companies incorporating IMS databases into their business models typically make significant investments in IMS application programs in order to have IMS perform meaningful data processing particularly tailored to the needs of their respective enterprises. IMS application programs are typically coded in COBOL, PL/I, C, PASCAL, Assembly Language, or Java.
The near universal acceptance of web technologies has significantly expanded the pool of programmers with extensive skills in object oriented languages, such as the Java programming language. With escalating demands for new applications, and particularly web-based applications, it is desirable to tap into this talent pool to help meet this demand. However, there are several problems (discussed infra) which interfere with efficient application development when Java is used as the application development language. Today an enterprise may be faced with the undesirable choice of deferring new applications due to a skills shortage or utilizing the available Java programmer resource and accepting extended development cycles because of the inherent inefficiencies when this development platform is utilized for applications accessing hierarchical databases.
Those of ordinary skill in the art will recognize that Java is an object oriented programming language that requires the creation of object oriented constructs such as classes. Therefore, when accessing hierarchical data from a Java application incorporating JDBC and SQL (hereinafter such applications are referred to as simply Java applications), all of the existing information reflecting existing databases must be transformed from procedural language data structures to object oriented classes. These procedural language data structures comprise database definitions, database views and field definitions.
Furthermore, when transforming these procedural language data structures to classes, the application developer frequently needs to add additional information to the object oriented classes to take advantage of various features within the Java development environment not available within the legacy programming environment. For example, within the Java environment, names of segments, fields, etc. are not restricted to 8 bytes of length but rather can be expanded to any length to have a meaningful name that conveniently conveys additional information about the named entity. Utilizing this feature of the Java programming language to access hierarchical data can improve programmer efficiency as well as minimize programming errors that occur when restricted length arcane symbols are miscomprehended.
Currently, when developing Java applications to access hierarchical databases, the Java programmer is required to manually subclass a base class (known as DLIDatabaseView) to create the required classes (known as metadata classes, since the class data represents “data about data”) to reflect the application's view of the hierarchical database. This is an extremely tedious and error prone process that involves manually reading complex IMS constructs (such as PSBs, PCBs, DBDs and Cobol Copylibs) and trying to decipher the relevant information from the syntax embedded within the constructs. In addition, transforming these legacy constructs into the appropriate metadata classes may require the programmer to manually add additional information to take advantage of various desirable features of the Java environment (as briefly discussed supra).
Once classes, encapsulating required hierarchical database information, are complete, there remains an additional problem of how to use this information within other tools and programming environments. Typically, another object oriented programming tool needing this same information would once again require manual conversion of these legacy hierarchical database data structures into a new object oriented form encapsulating the same hierarchical database information. This “manual data interchange” process is time consuming and has the same risks of introducing additional errors as discussed supra for the conversion process.
Accordingly, there is a great need for an automated and integrative approach to building, customizing and interchanging the class information required to access legacy hierarchical databases from an object oriented application whereby the deployment of object oriented applications and other object oriented tools required to access hierarchical databases may be accomplished in a more efficient and reliable manner.